#include <EASTL/queue.h>
#include <EASTL/deque.h>
#include <utl/allocator.h>
#include <atomic>

namespace utl
{
	template <typename T>
	using deque = eastl::deque<T, allocator, (DEQUE_DEFAULT_SUBARRAY_SIZE(T) * 8)>;

	template <typename T>
	using queue = eastl::queue<T, deque<T>>;

	/*template<typename T,u32 size>
	class safe_stack
	{
	public:
		safe_stack() :index{}
		{}
		void push(const T& item)
		{
			auto i{ index++ };
			assert(i < size);
			storage[i] = item;
		}
		void push(T&& item)
		{
			auto i{ index++ };
			assert(i < size);
			storage[i] = item;
		}
		T pop()
		{
			auto i{ index-- };
			assert(i != 0u);
			return storage[i];
		}

		bool pop(T& item)
		{
			if (index == 0u)
			{
				return false;
			}
			else
			{

			}
		}
	private:
		std::atomic_uint32_t index;
		T storage[size];
	};*/
}